package cn.itcast.io.b.bytestream;

import java.io.*;

public class FileOutputStreamDemo {

    public static final String LINE_SEPARATOR = System.getProperty("line.separator");

    public static void main(String[] args) throws IOException {

        // 需求：将数据写入文件中
        //test1();

        // 需求：将数据续写到已有的文件中
        //test2();

        // 异常的处理
        test3();

    }

    // 异常的处理
    private static void test3() {
        File file = getFile("tempFile", "file.txt");
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file, true);
            fos.write("212".getBytes());
            fos.close();
        } catch (IOException e) {
            System.out.println(e.toString());
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    throw new RuntimeException("系统关闭异常...");
                }
            }
        }
    }

    // 需求：将数据续写到已有的文件中
    private static void test2() throws IOException {
        File file = getFile("tempFile", "file.txt");
        OutputStream fos = new FileOutputStream(file, true);

        fos.write((LINE_SEPARATOR + "yyy").getBytes());
        fos.close();
    }

    // 需求：将数据写入文件中
    public static void test1() throws IOException {
        File file = getFile("tempFile", "file.txt");
        // 创建一个用于操作文件的字节输出流对象，创建时就要指定数据的存储目的地，如果输出流目的地是文件，会自动创建
        // 如果文件存在，则覆盖
        FileOutputStream fos = new FileOutputStream(file, true);
        fos.write("a".getBytes());
        fos.close();
    }

    public static File getFile(String parent, String file) {
        File dir = new File(parent);
        if (!dir.exists()) {
            dir.mkdir();
        }
        return new File(dir, file);
    }
}
